Count largest group¶
Time: O(NLogN); Space: O(N); easy
Given an integer n. Each number from 1 to n is grouped according to the sum of its digits.
Return how many groups have the largest size.
Example 1:
Input: n = 13
Output: 4
Explanation:
There are 9 groups in total, they are grouped according sum of its digits of numbers from 1 to 13: [1,10], [2,11], [3,12], [4,13], [5], [6], [7], [8], [9].
There are 4 groups with largest size.
Example 2:
Input: n = 2
Output: 2
Explanation:
There are 2 groups [1], [2] of size 1.
Example 3:
Input: n = 15
Output: 6
Example 4:
Input: n = 24
Output: 5
Notes:
1 <= n <= 10^4
Hint:
Count the digit sum for each integer in the range and find out the largest groups.
[1]:
import collections
class Solution1(object):
def countLargestGroup(self, n):
"""
:type n: int
:rtype: int
"""
count = collections.Counter()
for x in range(1, n+1):
count[sum(map(int, str(x)))] += 1
max_count = max(count.values())
return sum(v == max_count for v in count.values())
[2]:
s = Solution1()
n = 13
assert s.countLargestGroup(n) == 4
n = 2
assert s.countLargestGroup(n) ==2
n = 15
assert s.countLargestGroup(n) ==6
n = 24
assert s.countLargestGroup(n) ==5